package xyz.fivefaith.tool.mybatis.config; /**
 * Copyright (c) 2018-2028, Chill Zhuang 庄骞 (smallchill@163.com).
 *
 * <p>Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0; you may not use this file except in
 * compliance with the License. You may obtain a copy of the License at
 *
 * <p>http://www.gnu.org/licenses/lgpl.html
 *
 * <p>Unless required by applicable law or agreed to in writing, software distributed under the
 * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing permissions and
 * limitations under the License.
 */
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.transaction.annotation.EnableTransactionManagement;

import xyz.fivefaith.tool.mybatis.injector.FaithInjector;
import xyz.fivefaith.tool.mybatis.interceptor.SqlLogInterceptor;

/**
 * mybatisplus 配置
 *
 * @author Chill
 */
@Slf4j
@RequiredArgsConstructor
@AutoConfiguration
@EnableTransactionManagement(proxyTargetClass = true)
public class MybatisPlusConfiguration {

    /**
     * sql 日志
     *
     * @return SqlLogInterceptor
     */
    @ConditionalOnProperty(value = "faith.mybatis-plus.sql-log", matchIfMissing = true)
    @Bean
    public SqlLogInterceptor sqlLogInterceptor() {
        return new SqlLogInterceptor();
    }

    /** 自定义sql注入器 */
    @ConditionalOnProperty(value = "faith.mybatis-plus.ext-injector")
    @Bean
    public FaithInjector faithInjector() {
        return new FaithInjector();
    }
}
